C++ 类的静态成员

静态数据成员和静态成员函数.

一. 为什么要有静态成员?

因为可能达到这样的目的:同一个类所有的对象共用一个数据.
这可以用全局变量来做到, 但这样破坏了数据的封装性. 而用将要共享的数据说明为静态成员是更好的解决方案.

二. 静态成员有哪些?

  • 静态数据成员
  • 静态成员函数

三. 静态数据成员

生命周期

  • 程序开始运行时创建而不是对象创建时创建
  • 程序结束时销毁而不是在对象销毁时销毁

声明

  • 与一般的数据成员的声明类似, 只要在前面加上 static .

初始化

  • 必须对静态数据成员初始化P66
  • 不能在构造函数中进行初始化, 可以在实现成员函数的地方实现
    <数据类型> <类名> :: <静态数据成员名> = <初始值>;
    (注意要写数据类型)

引用

  • 静态数据成员可以说明为公有的, 私有的或保护的. 若为共有的可以直接访问.

  • 引用格式:

    • <类名>::<静态数据成员名>
    • <对象名>.<静态数据成员名>
    • 建议使用第一种, 因为静态数据成员不属于某个对象
  • 在成员函数里面, 可以用上面的方法引用也可以直接引用静态数据成员名.

四. 静态成员函数

作用

  • 用来访问同类中的静态成员

声明

  • 与一般的成员函数类似, 只要在前面加上 static .

实现

  • 与一般的成员函数没差别.

访问非静态数据成员

  • 由于静态成员函数只能访问静态数据成员, 所以要访问非静态数据成员的话, 必须通过参数传递的方式得到对象.